package ch02_data.operation;

import org.junit.Test;

import java.util.Optional;

/**
 * 逻辑运算符
 *
 * @author guodd
 * @version 1.0 use jdk 1.8
 */
public class LogicOperator {
    // 隐式类型转换
    @Test
    public void byte01() {
        byte a = 1;
        byte b = 2;
        // b = a + b;
        // byte c = a + b;  // error：case byte，编译出错
        byte c = (byte) (a + b);
        b += a;
        System.out.println(c);
        System.out.println(b);
    }

    // 浮点数是不完全精确的
    @Test
    public void initVal() {
        // float a = 1.0; // error：case float，默认是double
        double a = 0.1;
        System.out.println(a * 3);  // 输出0.3吗？
        System.out.println(3 == a * 3); // 是true吗？
    }

    // 如何优雅的处理分母为0的情况
    @Test
    public void div() {
        // 1、使用条件判断
        // 2、使用try-catch块捕获异常
        // 3、使用Java 8的Optional类
        int numerator = 10;
        int denominator = 0;
        Optional<Double> result = (denominator != 0) ? Optional.of((double) numerator / denominator) : Optional.empty();

    }
}
